package com.wsoft.sms.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.wsoft.entity.BaseEntity;

import java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

/**
 * <p>
 * 消息表
 * </p>
 *
 * @author zhanggukai
 * @since 2025年01月02日 15:35:55
 */
@Getter
@Setter
@TableName("sms_message")
@Schema(name = "SmsMessageEntity", description = "消息表")
public class SmsMessageEntity extends BaseEntity implements Serializable {

    @Schema(description = "消息类型(数据字典：系统消息、通知公告等)")
    @TableField("type")
    private Long type;

    @Schema(description = "提醒类型(force（强制提醒）  warn（提醒）none(不提醒))")
    @TableField("warn_type")
    private String warnType;

    @Schema(description = "客户端（web端、app端）")
    @TableField("client_type")
    private String clientType;

    @Schema(description = "标题")
    @TableField("title")
    private String title;

    @Schema(description = "内容")
    @TableField("msg_content")
    private String msgContent;

    @Schema(description = "开始时间")
    @TableField("start_time")
    private LocalDateTime startTime;

    @Schema(description = "结束时间")
    @TableField("end_time")
    private LocalDateTime endTime;

    @Schema(description = "优先级（L低，M中，H高）")
    @TableField("priority")
    private String priority;

    @Schema(description = "通告对象类型（ALL:全体用户,ORG:指定组织,POST:指定岗位,LEVEL：指定职务级别，MEMBER:指定用户）")
    @TableField("msg_type")
    private String msgType;

    @Schema(description = "指定对象")
    @TableField("msg_ids")
    private String msgIds;

    @Schema(description = "发布状态（0未发布，1已发布，2已撤销）")
    @TableField("send_status")
    private String sendStatus;

    @Schema(description = "发布单位")
    @TableField("send_org_id")
    private Long sendOrgId;

    @Schema(description = "发布人")
    @TableField("send_member_id")
    private Long sendMemberId;

    @Schema(description = "发布时间")
    @TableField("send_time")
    private LocalDateTime sendTime;

    @Schema(description = "撤销时间")
    @TableField("cancel_time")
    private LocalDateTime cancelTime;

    @Schema(description = "打开方式(组件：component 路由：url)")
    @TableField("open_type")
    private String openType;

    @Schema(description = "组件/路由 地址")
    @TableField("open_page")
    private String openPage;
}
